Слово за́мок, как может показаться, является исконно русским. Оно действительно родственно словам замо́к, замкнуть (ср. укр. замкнути, болг. мъкна «тащить, вырывать», сербохорв.ма̀кнути, ма̏кне̑м «двигать», чешск. mknouti «двигать», польск. mknąć «двигать(ся), гнать»; также родственно слову мчать), но его происхождение не может быть напрямую связано с этими словами.
Слово за́мок – это и заимствование, и множественная калька. В русский язык это слово пришло из польского, где слово zamek также легко соотносится с глаголом zamknąć «замкнуть, закрыть». Оно, в свою очередь, является калькой от немецкого Schloss (ср.-в.-нем. slōʒ), которое также связано с глаголом schließen (ср.-в.-нем. slieʒen) «замыкать, закрывать». И польское zamek, и немецкое Schloss подразумевают два значения: «за́мок» и «замо́к». В русском языке эти значения различаются по ударению.
Как бы издевательски это не казалось, но немцы тоже не были изобретателями своего «за́мка». Немецкое Schloss – это тоже калька, но уже от латинского clūsa «запор; укрепление», от claudō «запирать, замыкать» (ср. claustrum «запор, засов», clāvis «ключ», clāvus «гвоздь»). Этому слову родственны др.-греч. κλείς «ключ; засов», ирл. cló «гвоздь», нем. Schlüssel «ключ» и рус. ключ. Где замочек, там и ключик.